package day06;
//方法的演示
import java.util.Arrays;
import java.util.Random;
public class MethodDemo {

    public static void main(String[] args) {
        /*
            主程序主方法
            public static void main(String[] args)
            public static     (修饰词)
            void              (无返回值)
            main              (方法名)
            (String[] args)   (有参数)
         */
        //无参数无返回值
        /*
        say();//调用say()方法
        say();//再调用一次
        //sayHi(); 编译错误, 有参则必须传参
        //sayHi(250); 编译错误, 参数类型必须匹配

        //有参数有返回值
        sayHi("zhangsan");//String name = "zhangsan"------实参
        sayHi("lisi");//String name = "lisi"----实参
        sayHello("wangwu",18);//String name="wangwu",int age=18----实参
        sayHello("zhaoliu",28);//String name= "zhaoliu", int age=28---实参

        //有参有返回值, "return 值" 的用法解释
        int a = sum (5,6);//sum(5,6)的值就是return后的那个数
        int m=5 , n=6;
        int b = sum(n,m);//传的是m和n里面的数
        System.out.println(a);//11----仅仅模拟对返回值的后续操作
        System.out.println(b);
        System.out.println("继续执行");//调用完say()方法再输出该语句
        System.out.println("----------------------------");

        //生成一个整型数组, 并填充随机数据, 无参数
        int [] c = generateArray(5,10);//数组长度5, 在0~10以内随机填入五个数
        System.out.println("数组的长度:"+c.length);//模拟对返回值的后续操作
        System.out.println("数组的元素: ");
        for (int j = 0; j < c.length; j++) {
            System.out.println(c[j]);
        }

        int[] d = generateArray(10,30);//数组长度10, 在0~30以内随机填入十个数
        System.out.println("第一个元素: "+d[0]);//模拟对返回值的后续操作
        Arrays.sort(d);//---模拟对返回值的后续操作
        System.out.println("排序后的数组: ");
        for(int k = 0; k<d.length; k++){
            System.out.println(d[k]);
        }
        System.out.println("----------------------------");

        //有参无返回值, "return;" 的用法
        sayHello( "liangqu", 18);
        sayHello( "qianba", 65);
        */
        say();//自动绑定无参say方法
        say("zhangsan");//自动绑定String参的say
        say("lisi",25);//自动绑定String+int参的say
        // say(3.14); //编译错误, 没有double参的say

    }

    //生成一个整型数组, 并填充随机数据, 无参数
    public static int[] generateArray(int len,int max){
        Random rand = new Random();
        int[] arr = new int[len];
        for(int i =0; i<arr.length; i++){
            arr[i] = rand.nextInt(max+1);
        }
        return arr;
    }

    //有参有返回值, "return 值" 的用法解释
    public static int sum(int num1, int num2){
        int num = num1+num2;
        return num;//返回的是num里面的那个数
        //return num1+num2;//返回的是num1与num2的和
    }

    //有参无返回值
    public static void say(String name, int age){//-----形参
        if(age>=60){//在某种特定条件下,提前结束方法
            return;//结束方法
        }
        System.out.println("大家好,我叫"+name+",今年"+age+"岁了");
    }

    //无参数无返回值
    public static void say(){//---------形参
        System.out.println("Hello World");
    }

    //有参无返回值
    public static void say(String name){//---------形参
        System.out.println("大家好, 我叫"+name+", 今年21岁");//name的值在方法名里
    }

    public static void say(int age){}//正确的重载
    public static void say(int age,String name){}//正确的重载
    //public static int say(){return;}//编译错误, 重载与返回值无关
    //public static void say(String address){}//编译错误, 重载与参数名称无关
}
